<?php

namespace JsonLowCode\Table\Column;

use JsonLowCode\UI;
use JsonLowCode\Support\Js;
use JsonLowCode\Table\BaseColumn;

/**
 * @property UI\Icon $element
 */
class Icon extends BaseColumn
{
    protected int $size = 24;
    /**
     * @var array<int,string|bool>
     */
    protected array $color = [];
    /**
     * @param ...$parameters
     */
    public function __construct(...$parameters)
    {
        parent::__construct($parameters);
        $this->size = is_int($parameters[0])?$parameters[0]:24;
    }

    protected function booted(): void
    {
        $this->element = UI::icon();
        $this->element->size($this->size);
        if ($this->color){
            $this->element->color($this->color[0],$this->color[1]);
        }
        $this->element->bind("icon",$this->getColumnKey());
    }

    /**
     * 设置icon颜色
     * @param string $color 颜色值或者变量值
     * @param bool $isJsExpression 是否变量绑定
     * @param bool $isState 是表示绑定 state 中的变量, 否表示绑定 表格行数据 rowData 中的变量
     * @return $this
     */
    public function color(string $color = "", bool $isJsExpression = false, bool $isState = false): static
    {
        if ($isState){
            $this->color[0] = $isJsExpression? Js::this($color) :$color;
        }else{
            $this->color[0] = $isJsExpression? $this->rowDataField.".".$color:$color;
        }
        $this->color[1] = $isJsExpression;
        return $this;
    }
}
